網頁的顯示,一般都使用內建的Webview,或是連結到外部瀏覽器來作處理。
如果是純文字畫面的網頁或超連結的顯示,也是可以利用TextView來作處理。
TextView 除了顯示純字串資料,也支援HTML格式。
textViewHyperLink.setMovementMethod(LinkMovementMethod.getInstance())
var htmlString="歡迎來到<big><font color=\"#FF0000\"><b>Google</b></font></big>,點選連結:<br/><br/><a href=\"https://www.google.com.tw/\">https://www.google.com.tw/</a>"
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.24) {
textViewHyperLink.setText(Html.fromHtml(htmlString,Html.FROM_HTML_MODE_LEGACY))
}
else{
textViewHyperLink.setText(Html.fromHtml(htmlString))
}
textViewHyperLink.setText(Html.fromHtml(htmlString))
要顯示HTML使用上面的語法就可以了。
但不幸地Html.fromHtml(htmlString)這個語法在API Level24後被禁用了。
不用擔心,我們換個寫法
textViewHyperLink.setText(Html.fromHtml(htmlString,Html.FROM_HTML_MODE_LEGACY))
它的原型是 public static Spanned fromHtml(String source, int flags)
其中的flags表示:
FROM_HTML_MODE_COMPACT:html區塊與元素用一個換行符號隔開
FROM_HTML_MODE_LEGACY:html區塊與元素用兩個換行符號隔開
顯示Html語法的部分到這邊結束了。
不要忘了我們的主題是Html顯示與超連結的用法
當我們要在APP內開啟外部瀏覽器時,除了使用Intent這類方法,還可以透過TextView的超連結功能來開啟。
剛剛的寫法雖然我們在字串裡有加上google的網址,但是我們點選時並不會有動作去連結到外部瀏覽器。
這時候,我們只要加上textViewHyperLink.setMovementMethod(LinkMovementMethod.getInstance())
這行語法就可以讓字串內的超連結語法生效。